extends 棋子类
class_name 兵类

func 获取移动向量():
	if 棋子阵营=="红":
		if pos.x<5:
			return [Vector2i(-1,0),Vector2i(0,1),Vector2i(0,-1)]
		else:
			return [Vector2i(-1,0)]		
	else:
		if pos.x>4:
			return [Vector2i(1,0),Vector2i(0,1),Vector2i(0,-1)]
		else:
			return [Vector2i(1,0)]

func 获取行棋信息(目标pos:Vector2i):
	var 名字:String
	if 同列相同棋子数()>1:
		if 其余同列相同棋子数()>1:	#采用前中后+列号表示棋子
			名字=获取同列时位置()+获取平移列(目标pos)
		else:				#采用前中后+棋名表示棋子
			名字=获取同列时名字()
	else:
		名字=获取棋子代称()		#直接使用棋名+列号表示棋子
	var 棋子行棋动作:String=获取行棋动作(目标pos)
	var 回合数:String=str(棋局.当前回合数)
	if 棋局.总步数%2==0:
		回合数=""
	return {回合=回合数,行棋=名字+棋子行棋动作}

#兵的独有函数, 用于判断两列都有2个以上的兵这种情况
func 其余同列相同棋子数():
	var _同列相同棋子数:int=0
	for 列 in range(棋局.棋盘max列):
		if pos.y!=列:
			var 数量:int=0
			for 行 in range(棋局.棋盘max行):
				var 棋子:棋子类=棋局.棋子棋局[行][列]
				if 棋子!=null and 棋子.棋子阵营==棋子阵营 and 棋子.棋子名==棋子名:
					数量+=1
			if 数量>_同列相同棋子数:
				_同列相同棋子数=数量
	return _同列相同棋子数
